/**
* 智能指针
*/

#include <memory>
#include <vector>

int main() {
    std::unique_ptr<int> ptr(new int(1));
    // 不能进行拷贝赋值
    // std::unique_ptr<int> ptr2 = ptr; // => error
    // 只能移动
    std::unique_ptr<int> ptr1 = std::move(ptr); // ok

    // 作为容器元素存储在容器中
    std::unique_ptr<int> ptr2(new int(1));
    std::vector<std::unique_ptr<int>> vec;
    // 仍然需要移动
    // vec.push_back(ptr); // => error
    vec.push_back(std::move(ptr)); // ok

    return 0;
}
